#pragma once
#include<iostream>
#include<deque>
using namespace std;


template<class T, class Container = deque<T>>
class Queue {
private:
	Container _con;
public:
	T& front() {
		return _con.front();
	}

	T& back() {
		return _con.back();
	}

	void push(const T& x) {
		_con.push_back(x);
	}

	void pop() {
		_con.pop_front();
	}

	bool empty() {
		return _con.empty();
	}

	size_t size() {
		return _con.size();
	}

};